Window Manager Configuration Audit
Date: 2026-10-16. Scope: Openbox, bspwm, i3, Sway, Awesome, Qtile, Herbstluftwm, Fluxbox, IceWM, and Enlightenment integration files. Includes package profiles, hooks, user and system configuration, shortcuts, panels, menus, and shared scripts. Earlier network/printer changes remain in the same local work set.
Issues Fixed
Component |
Fixes |
|---|---|
Sessions |
Conditional launcher reuses the existing D-Bus bus; hooks accept absolute paths, preserve arguments, and migrate configurations previously wrapped in |
Common startup |
Launcher uses |
Openbox |
Shared PolicyKit agent; Tint2 autostart removal is limited to the Openbox hook and no longer affects other images through the cache script. |
bspwm |
Removed obsolete sxhkd |
i3 |
Reload no longer repeatedly launches the compositor, notifications, or Conky; tray also works when no monitor is marked primary. Removed shortcut that interfered with Super + right-click resize. |
Sway |
Fixed region capture with Slurp/Grim; Waybar starts without incorrectly splitting commands at |
Herbstluftwm |
POSIX expressions replace unsupported |
Fluxbox |
Snapping uses the existing |
IceWM |
Fixed ignored preference names: |
Awesome |
PolicyKit agent starts with the session; avoids running Dunst alongside Awesome’s native notifications; dialogs float by type. Compositor/Conky use the shared launcher. |
Qtile |
PolicyKit agent starts with the session; applications can request fullscreen. Compositor/notifications/Conky use the shared launcher. |
Enlightenment |
Reviewed supplied files, retaining native window management, menus, and notifications. Session uses the same conditional D-Bus launcher. |
Menus |
Honor |
Audio and session |
WM handles multimedia keys without competing Volumeicon shortcuts. Session menu limits process searches/signals to the user and prefers current-session IPC; Wayland locking has priority. |
Validation Performed
Full pytest suite, including concurrency, session-file migration, menu arguments/visibility, image composition, and wsdd socket tests.
Shell script and hook syntax, Python and XML checks; comparison of duplicate skel/XDG defaults where they should match.
Native parsers from cached Void packages: i3 4.25.1, Awesome 4.3, and Sway 1.12. Sway was checked with the headless backend, Pixman renderer, and local wallpaper equivalent to the installed ISO path.
Herbstluftwm 0.9.6 and bspwm 0.9.12: settings/rules applied through IPC in a private Xvfb session, without starting autostart programs.
Openbox 3.6.1: private startup with Pepvoid configuration and theme.
IceWM 4.0: preferences loaded by native parser. Fluxbox 1.3.7: native command inventory and private startup with temporary copies. Missing resources/defaults in the test environment are not syntax errors in the image.
Qtile: Python syntax and API review against cached package 0.37.1; no full Qtile session was run. Enlightenment: integration files reviewed; no full session was run.
Validation Requiring a Real Graphical Image
This audit does not prove the absence of all bugs or replace testing every ISO. The full login/logout, reload, authentication, click/drag, multi-monitor, suspend/resume, and tray-application paths still need testing on real hardware. Audio, battery, Bluetooth, Windows discovery, and printing require available devices/network.
Priorities for that test: start each WM, reload it twice and confirm there is
only one instance of each applet/panel; move/resize windows; authenticate in
an administrative prompt; test sound and suspend; open an SMB share and print
a test page. Network steps are also documented in
docs/network-shares-and-printing.md.